/*
 * twi_master.h

 *      Author: Christian
 *      Letztes Update: 03.11.13 Christian | Code Aufräumen
 *
 */
#ifndef TWI_MASTER_H_
#define TWI_MASTER_H_

#include <avr/io.h>
#include <stdint.h>

//////////////////////////////////////////////////////////////////////

/*
 *
 * Die Frequenzen des TWI und CPU muessen angepasst werden
 *
 */

// TWI FREQUENZ in Herz
#ifndef F_I2C
#define F_I2C 400000UL
#endif

// CPU FREQUENZ

#define CPU 16000000UL


////////////////////////////////////////////////////////////////////


/*
 * Initialisierung des TWI
 * Muss zuerst ausgefuehrt werden
 * Die Frequenz muss angepasst werden
 */
void twi_init( void );


/* START Impuls mit Adresse uebertragen
 * return 1 bei Erfolg.
 * return 0 wenn das Statusregister falschen status angibt
 */
uint8_t twi_start( uint8_t adresse );


/* REPSTART uebertragen
 * return 1 bei Erfolg.
 * return 0 wenn das Statusregister falschen status angibt
 */
uint8_t twi_repstart( uint8_t adresse );


// STOP Senden
void twi_stop( void );


/* TWI Datenbyte senden
 * Start Impuls und Adresse muessen gesendet sein
 * return 1 bei Erfolg.
 * return 0 wenn das Statusregister falschen status angibt
 * */
uint8_t twi_send_data( uint8_t data );


/*TWI Datenbyte empfangen
 * Start Impuls und Adresse muessen gesendet sein
 * nach Empfang kommt stop impuls
 * */
uint8_t twi_recieve_data_nack( void );


/*TWI Datenbyte empfangen
 * Start Impuls und Adresse muessen gesendet sein
 * nach Empfang kommt  KEIN stop impuls
 * */
uint8_t twi_recieve_data_ack( void );


/////////////////////////////////////////////////////////////

#endif /* TWI_MASTER_H_ */
